home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / TODO < prev   
Text File  |  1992-11-15  |  4KB  |  107 lines

  1. Interpreter kernel
  2.  
  3.   o  Some primitives (such as provide/require/feature? and several
  4.      special forms) should be written in Scheme, not in C.
  5.  
  6.   o  How to gain more heap space:  POINTER(x) should be relative to the
  7.      start of the heap.  Also, as objects are 4-byte or 8-byte aligned,
  8.      the rightmost bits are always unused.
  9.  
  10.   o  Provide a list (include file) of external functions exported by the
  11.      interpreter that can be used by an extension.  Not all functions
  12.      that are currently declared in include/extern.h should be used by
  13.      extensions.
  14.  
  15.      Also, it should not matter to an extension writer whether a
  16.      primitive is written in Scheme or in C -- primitives should not
  17.      be invoked directly via the P_ functions.  Instead, a more general
  18.      mechanism is needed.
  19.  
  20.   o  Implement a pure heap for constant objects (should be placed into
  21.      read-only text segment by "dump").
  22.  
  23.   o  Quasiquote for vectors.
  24.  
  25.   o  MAX_READ_SYMBOL and MAX_READ_STRING are artificial limits and
  26.      should go.
  27.  
  28.   o  Symbols like '1\2 must print as 1\2.
  29.  
  30.   o  Documentation strings.  Put them into an extra field in S_Compound.
  31.      New primitives:  procedure-documentation, macro-documentation.
  32.  
  33.   o  Generic print, equal, etc. functions should be provided for
  34.      extensions.
  35.  
  36.   o  Treat # as comment character if file starts with #! (hard to
  37.      implement, as this requires the reader to detect beginning of line).
  38.  
  39.   o  Provide a version of the interpreter without main() for applications
  40.      that insist in providing their own main().
  41.  
  42.  
  43. Dynamic loading and "dump"
  44.  
  45.   o  dump.ecoff.c is wrong; it copies the wrong symbol table.
  46.  
  47.   o  Dump for NEXT-OS/MACH.
  48.  
  49.   o  ld-based loading for NEXT-OS/MACH.
  50.  
  51.   o  Dump for HP-PA machines.
  52.  
  53.   o  Perhaps dlopen() should be supported to provide a restricted
  54.      dynamic loading facility on systems that do not have real
  55.      incremental loading.  However, this would probably break dump,
  56.      as dump requires the executable to be linked statically.
  57.  
  58.  
  59. Extensions
  60.  
  61.   o  Motif 1.2:  add support for new widgets and new functions.
  62.  
  63.   o  A UNIX process interface.
  64.  
  65.   o  A general POSIX extension.
  66.  
  67.  
  68. Projects
  69.  
  70.   o  Symbol completion would be really useful (but hard to implement).
  71.  
  72.   o  The number system of Elk is not a standard-conforming `number
  73.      system subset' and should be fixed.
  74.  
  75.   o  A reasonable debugger and a better trace facility are needed.
  76.  
  77.   o  Exceptions should be implemented correctly.  It should no longer
  78.      be possible to interrupt the interpreter at any point.
  79.      Also, some exceptions (e.g. timer interrupt) must return to the
  80.      point where they were raised (i.e. the handler is not required
  81.      to invoke a continuation).
  82.  
  83.   o  map and for-each should also work for other data structures
  84.      (vectors, populations, ...).
  85.  
  86.   o  The error-handler should be invoked with a symbol identifying the
  87.      error as an argument.  The symbol has an error text property
  88.      holding the full text.
  89.  
  90.   o  Ports: the accessor functions should be part of the port object.
  91.  
  92.   o  Implement tables.  Need to be rehashed on each GC.  Table object
  93.      holds hash function, compare function, etc.
  94.  
  95.   o  Implement weak conses (see memmag.c of C-Scheme).  Weak conses are
  96.      needed for populations and object-hash.
  97.  
  98.   o  Implement object-hash and object-unhash.
  99.  
  100.   o  Implement populations (weak sets).  Primitives: make-population
  101.      population?  add-to-population  remove-from-population
  102.      population-member?  population->list  population-empty?
  103.      map/walk(?)-population.
  104.  
  105.   o  It should be possible to define new types in Scheme (not only in
  106.      extensions).  New primitive: define-type (similar to define-structure?).
  107.